package com.zzj.ecology.system.mapper.system;

import com.zzj.ecology.system.bean.system.SysDept;
import com.zzj.ecology.system.bean.system.SysDeptExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SysDeptMapper {
    long countByExample(SysDeptExample example);

    int deleteByExample(SysDeptExample example);

    int deleteByPrimaryKey(Integer deptId);

    int insert(SysDept record);

    int insertSelective(SysDept record);

    List<SysDept> selectByExample(SysDeptExample example);

    SysDept selectByPrimaryKey(Integer deptId);

    int updateByExampleSelective(@Param("record") SysDept record, @Param("example") SysDeptExample example);

    int updateByExample(@Param("record") SysDept record, @Param("example") SysDeptExample example);

    int updateByPrimaryKeySelective(SysDept record);

    int updateByPrimaryKey(SysDept record);

    /**
     * 分页查询部门列表数据
     * @param first
     * @param pageCounts
     * @return
     */
    List<SysDept> findPageList(Integer first, Integer pageCounts);

    /**
     * 根据 pid 查询父集
     * @param pid
     * @return
     */
    SysDept findById(Integer pid);

    /**
     * 查询 下拉框 数据,数据格式
     * @return
     */
    List<SysDept> dtree();

    /**
     * 建立 用户 与 部门的关联关系
     * @param userId
     * @param deptId
     * @return
     */
    int insertUserDeptRelation(@Param("userId") Integer userId, @Param("deptId") Integer deptId);

    /**
     * 根据用户ID查询 用户关联的部门对象
     * @param userId
     * @return
     */
    List<SysDept> selectUserDeptRelationByUserId(Integer userId);

    /**
     * 根据 用户ID 删除数据
     * @param userId
     * @return
     */
    int deleteUserDeptRelationByUserId(Integer userId);

    /**
     * 批量修改 delete_status = '0' 修改成 '1', 记录修改人员并且修改时间
     * @param ids
     * @param username
     * @return
     */
    int updateDeleteStatusByIds(@Param("ids") List<Integer> ids, @Param("updateBy") String username);
}